<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>附录 A.1 常见问题解答 (FAQ) - Langchain框架教程</title>
    <link rel="stylesheet" href="../shared_styles.css">
</head>
<body>
    <div class="container">
        <h1>附录 A.1 常见问题解答 (FAQ)</h1>

        <h2 id="q1">Q1: Langchain是什么？</h2>
        <p>Langchain是一个用于开发由语言模型驱动的应用程序的框架。它提供了一套工具、组件和接口，使得构建复杂的LLM应用变得更加容易。</p>

        <h2 id="q2">Q2: Langchain的核心模块有哪些？</h2>
        <p>Langchain的核心模块包括：</p>
        <ul>
            <li><strong>Models:</strong> 各种语言模型的接口（如LLMs和ChatModels）。</li>
            <li><strong>Prompts:</strong> 管理、优化和序列化提示词。</li>
            <li><strong>Chains:</strong> 将多个组件组合成一个端到端的应用。</li>
            <li><strong>Agents:</strong> 赋予模型使用工具的能力，根据输入动态决定行动。</li>
            <li><strong>Memory:</strong> 记住之前的交互历史。</li>
            <li><strong>Indexes:</strong> 结构化文档，以便与语言模型进行交互。</li>
            <li><strong>Callbacks:</strong> 记录和流式传输任何Chain的中间步骤。</li>
        </ul>

        <h2 id="q3">Q3: 如何在Langchain中使用Qwen模型？</h2>
        <p>你需要在环境中配置Qwen的API密钥，然后初始化Qwen模型。例如：</p>
        <pre><code class="language-python">import os
from langchain_community.llms import Qwen
from langchain_community.chat_models import ChatQwen

# 配置Qwen API密钥
# os.environ["DASHSCOPE_API_KEY"] = "YOUR_DASHSCOPE_API_KEY" # 替换为你的API密钥

# 初始化Qwen LLM
llm = Qwen(temperature=0.7)

# 初始化Qwen Chat Model
chat_model = ChatQwen(temperature=0.7)
</code></pre>

        <h2 id="q4">Q4: Agent和Chain有什么区别？</h2>
        <p>Chain是预定义好的一系列步骤，按照固定的顺序执行。而Agent则更具动态性，它可以根据输入和可用的工具，通过语言模型来决定下一步要执行哪个动作。</p>

        <h2 id="q5">Q5: 如何为Agent加载工具？</h2>
        <p>可以使用<code>langchain.agents.load_tools</code>函数来加载常用的工具，或者自定义工具。例如加载搜索工具：</p>
        <pre><code class="language-python">from langchain.agents import load_tools
from langchain_community.llms import Qwen

# 初始化Qwen模型
llm = Qwen(temperature=0)

# 加载工具
tools = load_tools(["ddg-search"], llm=llm) # 使用DuckDuckGo搜索
</code></pre>

        <h2 id="q6">Q6: Langchain中的Memory有什么作用？</h2>
        <p>Memory允许Chain或Agent记住之前的对话历史或状态信息，这对于构建聊天机器人或需要上下文的应用非常重要。</p>

        <h2 id="q7">Q7: 如何处理长文本？</h2>
        <p>Langchain提供了多种处理长文本的技术，例如文档加载器（Document Loaders）、文本分割器（Text Splitters）和向量存储（Vector Stores），可以将长文本分割、嵌入并存储，以便语言模型进行检索和处理（RAG）。</p>

        <h2 id="q8">Q8: 如何提高Agent的性能？</h2>
        <p>提高Agent性能的方法包括：优化提示词、选择合适的Agent类型、提供高质量的工具、以及使用Callbacks来监控和调试Agent的执行过程。</p>

        <div class="navigation">
            <a href="../chapter10/chapter10_prompt_engineering_advanced.html" class="prev"><< 第十章：高级提示词工程</a>
            <a href="langchain_tutorial_outline.html" class="outline">返回大纲</a>
            <!-- Next chapter link will be added here if applicable -->
        </div>
    </div>
</body>
</html>
